using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Ruminate.GUI.Framework;

namespace Ruminate.GUI.Content
{

    public class Label : Element {

        /*####################################################################*/
        /*                               Variables                            */
        /*####################################################################*/               
      
        public string Value { get; set; }

        private Texture2D _renderedText;
        private TextRenderer _renderer;

        /*####################################################################*/
        /*                           Initialization                           */
        /*####################################################################*/

        public Label(int x, int y, string label) 
            : base(new Offset(x, y, 0, 0)) {

            Value = label;            
        }

        /*####################################################################*/
        /*                                Resized                             */
        /*####################################################################*/

        protected internal override void Init() {

            _renderer = (TextRenderer)InstanceData.DefaultRenderers["TextRenderer"];
        }

        protected internal override void Render() {

            _renderedText = _renderer.Render(Value);
        }
        
        protected internal override Rectangle ChildRenderArea() {

            return LocationComponent.RenderBounds;
        }

        /*####################################################################*/
        /*                                Logic                               */
        /*####################################################################*/        

        protected internal override void Update() { }

        protected internal override void Draw() {

            SpriteBatch.Draw(_renderedText, LocationComponent.RenderLocation, Color.White);
        }        
    }
}